Although the paperless office has been contemplated for decades, it is not yet a reality in most environments. Moreover, a hardcopy version of certain kinds of documents and artistic creations may always be desirable. Hence, printing is an important function provided by computing devices.
FIG. 1 is an example of an existing printing scenario 100. As illustrated, existing printing scenario 100 includes an application 101, a print spooler 105, and “n” printers 107(1 . . . n). Application 101 may be, for example, a word processing program. Application 101 creates a printable file 103. This creation of printable file 103 may possibly be effectuated in conjunction with a graphics subsystem, such as by application 101 calling an application programming interface (API) of the graphics subsystem. Printable file 103 is provided (e.g., as a stream of bits) to print spooler 105. Print spooler 105 is a component that is capable of managing one or more printers 107 and orchestrating print jobs with printers 107.
Each printer 107 is associated with a driver 109 and a print processor 111. As illustrated, printer #1 107(1) is associated with driver 109(1) and print processor 111(1), and printer #n 107(n) is associated with driver 109(n) and print processor 111(n). Print processors 111 are capable of providing printing enhancements such as transparences, watermarks, binding layouts, and n-up printing. Drivers 109 are responsible for converting printable file 103 from a computer language to a printer language.
Print processor 111 operates on printable file 103 to produce an enhanced printable file 103. After the enhancements are provided by print processor 111, driver 109 operates on the enhanced printable file 103 to create a converted (and enhanced) printable file 103. The converted printable file 103 can then be printed by a printer 107 that is associated with the print processor 111 and driver 109.
Each printer 107, or more specifically each printer queue in print spooler 105, has no more than a single associated driver 109 and a single associated print processor 111. Each particular driver 109 and print processor 111 pair are specifically designed to work together. Consequently, drivers 109 and print processors 111 cannot be freely interchanged with one another. Print spoolers 105 are designed to utilize at most one driver 109 and one print processor 111 per printer 107. Consequently, a new enhancement feature or conversion function can be added only by installing a completely new print processor 111 or driver 109, respectively, which replaces a previous one.
In short, existing printing subsystems are designed to utilize one driver 109 and one print processor 111 for any given printer 107. The order in which they operate is predefined with print processor 111 operating prior to driver 109. Both the input and the output interfaces for drivers 109 and print processors 111 are fixed. Finally, the data types with which drivers 109 and print processors 111 interact are also fixed.
Accordingly, there is a need for general schemes and/or techniques that can facilitate printing flexibility and/or adjustability across a range of printing features and functions.